擴展問題指的是如何從原型轉換為完整系統時所需考慮的挑戰,涵蓋資料蒐集、預處理、訓練到部署等方面。討論時大致可分為兩個面向:再現性、復原力,其中復原力涉及的問題又可再細分為涉及系統環境或關於機器學習模型本身的議題。
在建構機器模型系統前,我們通常會先開發一個原型 (prototype),這個原型可能會是一個 notebook (e.g. ipynb),或者一個可一口氣跑完的 python script。然而,在真正進行機器學習系統開發時,問題並不是那麼單純,為了建構一個穩定的系統,資料集的規模將決定解決方案所需的工具,擴展問題指的就是這個從原型擴展為系統時所需考慮的一切問題,從資料蒐集、預處理、訓練到佈署都囊括在其中。
換句話說,我們在討論擴展問題時,可以說我們討論的是「針對這個機器學習系統,我們應該選擇哪些工具或方法,以建設必要的基礎設施」。
主要可以分成兩類:再現性和復原力,其中再現性我們曾在 [Day 7] 建構 ML 系統的挑戰 — 再現性 討論過,因此接下來僅討論復原力的部分。
就如同一般的系統,在建構機器學習系統時,也同樣需要考慮該如何維持系統的可用性。復原力指的是系統在面對異常狀況與外部干擾時,能夠維持其功能、效能,並迅速恢復的能力。
主要問題類型可以分成兩大類:涉及系統環境或關於機器學習模型本身。以下列舉一些常見的問題,但需要注意的是,資料工程師或機器學習工程師不一定需要完全掌握或有能力處理以下問題,具體情況應視情況進行合理的分工。
系統的運行環境可能會因硬體故障、網絡波動、或資源過載等原因導致異常情況發生。為了保持系統的復原力,必須考慮到以下幾個方面:
機器學習模型本身也會面臨一系列異常情況,這些情況可能來自於數據的異常、模型性能的退化或外部攻擊。為此,機器學習系統必須具備以下能力: